package p20_mvc初体验;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import p20_mvc初体验._4_返回值解析器.Yml;
import p20_mvc初体验._4_返回值解析器.Person;
import p20_mvc初体验._3_参数解析器.RemoteIp;

/**
 * 一个控制器类，演示使用
 */
@Controller
public class MyController {
    /**
     * 控制器方法
     */
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }

    @PostMapping("test")
    public String test(@RequestParam("name") String name) {
        System.out.println("====>test被调用::" + name);
        return "test";
    }

    /**
     * 这里使用了自定义参数解析器，获取请求头的ip赋值给该方法参数
     */
    @PostMapping("remoteIpTest")
    public String remoteIpTest(@RemoteIp String ip, Integer name) {
        System.out.println("====>远程ip为:" + ip);
        return "ip";
    }


    /**
     * 如果控制器方法加了@Yml，则使用自定义返回值解析器处理器返回值，将返回值转为yml格式
     * 下面同样使用了自定义参数解析器
     */
    @RequestMapping("yml")
    @Yml
    public Person testYml(Integer id, String name, @RemoteIp String ip) {
        Person p = new Person();
        p.setId(id);
        p.setIp(ip);
        p.setName(name);
        System.out.println("====>自定义返回值解析器");
        return p;
    }
}
